数据库实验2 您所在的位置:网站首页 按缴款识别码查询 按学生编号查询 数据库实验2

数据库实验2

2023-07-17 00:44| 来源: 网络整理| 查看: 265

数据查询 实验内容实验要求实验步骤及处理结果思考体会参考资料

实验内容 在studentsdb数据库中使用SELECT语句进行基本查询。 (1)在student_info表中,查询每个学生的学号、姓名、出生日期信息。 (2)查询student_info表学号为 0002的学生的姓名和家庭住址。 (3)查询student_info表所有出生日期在95年以后的女同学的姓名和出生日期。使用select语句进行条件查询。 (1)在grade表中查询分数在70-80范围内的学生的学号、课程编号和成绩。 (2)在grade表中查询课程编号为0002的学生的平均成绩。 (3)在grade表中查询选修课程编号为0003的人数和该课程有成绩的人数。 (4)查询student_info的姓名和出生日期,查询结果按出生日期从大到小排序。 (5)查询所有姓名“张”的学生的学号和姓名。对student_info表,查询学生的学号、姓名、性别、出生日期及家庭住址,查询结果先按照性别的由小到大排序,性别相同的再按学号由大到小排序。使用GROUP BY子句查询grade表中各个学生的平均成绩。使用UNION运算符针student_info表中姓“刘”的学生的学号、姓名与姓“张”的学生的学号、姓名返回在一个表中。嵌套查询 (1)在student_info表中查找与“刘东阳”性别相同的所有学生的姓名、出生日期。 (2)使用IN子查询查找所修课程编号为0002、0005的学生学号、姓名、性别。 (3)使用ANY子查询查找学号为0001的学生的分数比0002号的学生的最低分数高的课程编号和分数。 (4)使用ALL子查询查找学号为0001的学生的分数比学号为0002的学生的最高成绩还要高的课程编号和分数。连接查询 (1)查询分数在80-90范围内的学生的学号、姓名、分数。 (2)使用INNER JOIN连接方式查询学习“数据库原理及应用”课程的学生学号、姓名、分数。 (3)查询每个学生所选课程的最高成绩,要求列出学号、姓名、最高成绩。 (4)使用左外连接查询每个学生的总成绩,要求列出学号、姓名、总成绩,没有选修课程的学生的总成绩为空。 (5)为grade表添加数据行:学号为0004、课程编号为0006、分数为76。 使用右外连接查询所有课程的选修情况,要求列出课程编号、课程名称、选修人数,curriculum表中没有的课程列值为空。 实验要求

1.粘贴SQL代码(小四号,宋体)及运行结果图,截图清晰。 2.学习通平台提交实验报告。 3.文件名:姓名+学号+实验几+班级

实验步骤及处理结果

粘贴SQL代码(小四号,宋体)及运行结果图,截图清晰。 …

思考体会 参考资料 # 附 代码 #1. 在studentsdb数据库中使用SELECT语句进行基本查询。 #(1)在student_info表中,查询每个学生的学号、姓名、出生日期信息。 USE studentsdb; SELECT 学号,姓名,出生日期 FROM student_info; #(2)查询student_info表学号为 0002的学生的姓名和家庭住址。 SELECT 姓名,家庭住址 FROM student_info WHERE 学号 = '0002'; #(3)查询student_info表所有出生日期在95年以后的女同学的姓名和出生日期。 SELECT 姓名,出生日期 FROM student_info WHERE 出生日期 >= '1996-01-01' AND 性别 = '女'; #2. 使用select语句进行条件查询。 #(1)在grade表中查询分数在70-80范围内的学生的学号、课程编号和成绩。 SELECT * FROM grade WHERE 分数 BETWEEN 70 AND 80; #(2)在grade表中查询课程编号为0002的学生的平均成绩。 SELECT AVG(分数) 平均分 FROM grade WHERE 课程编号 = '0002'; #(3)在grade表中查询选修课程编号为0003的人数和该课程有成绩的人数。 SELECT COUNT(*) 选课人数,COUNT(分数) 有成绩人数 FROM grade WHERE 课程编号 = '1003'; #(4)查询student_info的姓名和出生日期,查询结果按出生日期从大到小排序。 SELECT 姓名,出生日期 FROM student_info ORDER BY 出生日期 DESC; #(5)查询所有姓名“张”的学生的学号和姓名。 SELECT 学号,姓名 FROM student_info WHERE 姓名 LIKE '张%'; #3. 对student_info表,查询学生的学号、姓名、性别、出生日期及家庭住址,查询结果先按照性别的由小到大排序,性别相同的再按学号由大到小排序。 SELECT 学号,姓名,性别,出生日期,家庭住址 FROM student_info ORDER BY 性别 ASC,学号 DESC; #4. 使用GROUP BY子句查询grade表中各个学生的平均成绩。 SELECT 学号,AVG(分数) 平均成绩 FROM grade GROUP BY 学号; #5. 使用UNION运算符针student_info表中姓“刘”的学生的学号、姓名与姓“张”的学生的学号、姓名返回在一个表中。 SELECT 学号,姓名 FROM student_info WHERE 姓名 LIKE '刘%' UNION SELECT 学号,姓名 FROM student_info WHERE 姓名 LIKE '张%'; #6. 嵌套查询 #(1)在student_info表中查找与“刘东阳”性别相同的所有学生的姓名、出生日期。 SELECT 姓名,出生日期 FROM student_info WHERE 性别 = (SELECT 性别 FROM student_info WHERE 姓名 = '刘东阳'); #(2)使用IN子查询查找所修课程编号为0002、0005的学生学号、姓名、性别。 SELECT 学号,姓名,性别 FROM student_info WHERE 学号 IN(SELECT 学号 FROM grade WHERE 课程编号 IN('0002','0005')); #(3)使用ANY子查询查找学号为0001的学生的分数比0002号的学生的最低分数高的课程编号和分数。 SELECT 课程编号,分数 FROM grade WHERE 学号 = '0001' AND 分数 >ANY(SELECT 分数 FROM grade WHERE 学号 = '0002'); #(4)使用ALL子查询查找学号为0001的学生的分数比学号为0002的学生的最高成绩还要高的课程编号和分数。 SELECT 课程编号,分数 FROM grade where 学号 = '0001' AND 分数 >ALL(SELECT 分数 FROM grade where 学号 = '0002'); #7. 连接查询 #(1)查询分数在80-90范围内的学生的学号、姓名、分数。 SELECT s.学号,姓名,分数 FROM student_info s,grade g WHERE s.学号 = g.学号 AND 分数 BETWEEN 80 AND 90; #(2)使用INNER JOIN连接方式查询学习“数据库原理及应用”课程的学生学号、姓名、分数。 SELECT s.学号,姓名,分数 FROM student_info s INNER JOIN grade g ON s.学号 = g.学号 INNER JOIN curriculum c ON g.课程编号 = c.课程编号 WHERE 课程名称 = '数据库原理及应用'; #(3)查询每个学生所选课程的最高成绩,要求列出学号、姓名、最高成绩。 SELECT s.学号,姓名,MAX(分数) 最高成绩 FROM student_info s,grade g WHERE s.学号 = g.学号 GROUP BY s.学号; #(4)使用左外连接查询每个学生的总成绩,要求列出学号、姓名、总成绩,没有选修课程的学生的总成绩为空。 SELECT s.学号,姓名,SUM(分数) 总成绩 FROM student_info s LEFT OUTER JOIN grade g ON s.学号 = g.学号 GROUP BY s.学号; #(5)为grade表添加数据行:学号为0004、课程编号为0006、分数为76。 #使用右外连接查询所有课程的选修情况,要求列出课程编号、课程名称、选修人数,curriculum表中没有的课程列值为空。 INSERT INTO grade VALUES('0004','0006',76); SELECT g.课程编号,课程名称,COUNT(*) 选修人数 FROM curriculum c RIGHT OUTER JOIN grade g ON g.课程编号 = c.课程编号 GROUP BY g.课程编号;


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有